home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / wb / czesc_3 / multireset / prefs / multiresetprefs.e < prev    next >
Text File  |  1995-12-03  |  36KB  |  890 lines

  1. OPT OSVERSION=37,PREPROCESS
  2.  
  3. MODULE 'muimaster','libraries/mui','utility/tagitem','utility/hooks',
  4.        'intuition/classes','intuition/classusr','intuition/intuition',
  5.        'intuition/screens','asl','libraries/asl','tools/ilbm','tools/ilbmdefs',
  6.        'exec/ports','exec/nodes','icon',
  7.        'graphics/view','graphics/gfx','graphics/rastport',
  8.        'datatypes/datatypes','datatypes/datatypesclass',
  9.        'datatypes/pictureclass','datatypes'
  10.  
  11. ENUM    NOMUI,NOICON
  12.  
  13. ENUM    GETSFX=100,GETGFX,GETLOG,GETDOS,GETLOAD,GETSAVE,GETTEST,GETINFO,GETRMVE,GETQUIT
  14. ENUM    GETSTRSFX=200,GETSTRGFX,GETSTRLOG,GETSTRDOS,GETPICX,GETPICY,GETVECX,GETVECY,
  15.         GETCOOL,GETCOLD,GETMEM,GETTAG,GETWB,GETSCR,GETWRITE,GETOPEN,GETWAIT,GETREXX,
  16.         GETPICPOS,GETVECPOS,GETDELAY
  17.  
  18. CONST   MODE_TEST=0,MODE_REMOVE=1
  19.  
  20. OBJECT prefs
  21.   sfxpath[80]:ARRAY
  22.   gfxpath[80]:ARRAY
  23.   dospath[80]:ARRAY
  24.   logpath[80]:ARRAY
  25.   vectors [4]:ARRAY OF CHAR
  26.   workbench  :INT
  27.   userscreen :INT
  28.   noopen     :INT
  29.   nowrite    :INT
  30.   pos     [4]:ARRAY OF INT
  31.   nowait     :INT
  32.   norexx     :INT
  33.   ver        :INT
  34.   time       :INT
  35. ENDOBJECT
  36.  
  37. OBJECT mrmsg
  38.   message    :mn
  39.   mode       :LONG
  40.   prefs      :LONG
  41. ENDOBJECT
  42.  
  43. OBJECT app_obj
  44.   app           :LONG
  45.   roOTWINDOW    :LONG
  46.   bt_Sfx        :LONG
  47.   bt_Gfx        :LONG
  48.   bt_Log        :LONG
  49.   bt_Dos        :LONG
  50.   stR_Sfx       :LONG
  51.   stR_Gfx       :LONG
  52.   stR_Log       :LONG
  53.   stR_Dos       :LONG
  54.   ch_Cold       :LONG
  55.   ch_Kickmem    :LONG
  56.   ch_Cool       :LONG
  57.   ch_Kicktag    :LONG
  58.   ch_Nodelay    :LONG
  59.   ch_Workbench  :LONG
  60.   ch_Norexx     :LONG
  61.   ch_Userscreen :LONG
  62.   sl_Delay      :LONG
  63.   ch_Noopen     :LONG
  64.   ch_Nowrite    :LONG
  65.   bt_PicPos     :LONG
  66.   stR_Picx      :LONG
  67.   stR_Picy      :LONG
  68.   bt_Vecpos     :LONG
  69.   stR_Vecx      :LONG
  70.   stR_Vecy      :LONG
  71.   bt_Load       :LONG
  72.   bt_Save       :LONG
  73.   bt_Info       :LONG
  74.   bt_Test       :LONG
  75.   bt_Remove     :LONG
  76.   bt_Quit       :LONG
  77.   stR_Options   :LONG
  78. ENDOBJECT
  79.  
  80. DEF mrapp:PTR TO app_obj,muimasterbase,mrprefs:PTR TO prefs,
  81.     mrfile[80]:STRING,mrdir[80]:STRING,mrhook:hook,
  82.     tsfx[80]:STRING,tgfx[80]:STRING,tlog[80]:STRING,tdos[80]:STRING,
  83.     tpix[4]:STRING, tpiy[4]:STRING ,tvex[4]:STRING, tvey[4]:STRING,
  84.     proglock,
  85.     mricon,mriconname[80]:STRING,programname[80]:STRING,programdir[80]:STRING
  86.  
  87. PROC create_app()
  88. DEF roOT , line1 , options , files , fileButtons,
  89.     fileStrings , vectors , la_Cold , obj_aux0 , obj_aux1,
  90.     la_KickMem , obj_aux2 , obj_aux3 , la_Cool , obj_aux4,
  91.     obj_aux5 , la_KickTag , obj_aux6 , obj_aux7 , misc,
  92.     miscGr1 , la_NoDelay , obj_aux8 , obj_aux9 , la_Workbench,
  93.     obj_aux10 , obj_aux11 , la_NoRexx , obj_aux12 , obj_aux13,
  94.     la_Userscreen , obj_aux14 , obj_aux15 , miscGr2 , la_Delay,
  95.     dos , la_NoOpen , obj_aux16 , obj_aux17 , la_NoWrite,
  96.     obj_aux18 , obj_aux19 , line2 , positions , obj_aux20,
  97.     obj_aux21 , obj_aux22 , obj_aux23 , obj_aux24 , obj_aux25,
  98.     obj_aux26 , obj_aux27 , line3, obj_aux28, obj_aux29
  99.  
  100.     IF (mrapp:=New(SIZEOF app_obj))=NIL THEN RETURN NIL
  101.  
  102.     mrapp.stR_Options:=['Files','Vectors','Misc','Dos',NIL]
  103.  
  104.     mrapp.bt_Sfx :=Mui_MakeObjectA(MUIO_Button,['Sfx'])
  105.     mrapp.bt_Gfx :=Mui_MakeObjectA(MUIO_Button,['Gfx'])
  106.     mrapp.bt_Log :=Mui_MakeObjectA(MUIO_Button,['Log'])
  107.     mrapp.bt_Dos :=Mui_MakeObjectA(MUIO_Button,['Dos'])
  108.  
  109.     fileButtons  :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'FileButtons',
  110.                            MUIA_Weight,5,
  111.                    MUIA_Group_VertSpacing,5,
  112.                                    MUIA_Group_Child,mrapp.bt_Sfx,
  113.                                MUIA_Group_Child,mrapp.bt_Gfx,
  114.                                    MUIA_Group_Child,mrapp.bt_Log,
  115.                                MUIA_Group_Child,mrapp.bt_Dos,TAG_DONE])
  116.     mrapp.stR_Sfx :=Mui_NewObjectA('String.mui',[TAG_IGNORE,0,
  117.                         MUIA_Frame,MUIV_Frame_String,MUIA_HelpNode,'STR_Sfx',TAG_DONE])
  118.     mrapp.stR_Gfx :=Mui_NewObjectA('String.mui',[TAG_IGNORE,0,
  119.                         MUIA_Frame,MUIV_Frame_String,MUIA_HelpNode,'STR_Gfx',TAG_DONE])
  120.     mrapp.stR_Log :=Mui_NewObjectA('String.mui',[TAG_IGNORE,0,
  121.                         MUIA_Frame,MUIV_Frame_String,MUIA_HelpNode,'STR_Log',TAG_DONE])
  122.     mrapp.stR_Dos :=Mui_NewObjectA('String.mui',[TAG_IGNORE,0,
  123.                         MUIA_Frame,MUIV_Frame_String,MUIA_HelpNode,'STR_Dos',TAG_DONE])
  124.     fileStrings   :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'FileStrings',
  125.                                     MUIA_Weight,20,
  126.                                     MUIA_Group_Child,mrapp.stR_Sfx,
  127.                                     MUIA_Group_Child,mrapp.stR_Gfx,
  128.                                     MUIA_Group_Child,mrapp.stR_Log,
  129.                                     MUIA_Group_Child,mrapp.stR_Dos,TAG_DONE])
  130.     files         :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'Files',
  131.                                     MUIA_Group_Columns,2,
  132.                                     MUIA_Group_Child,fileButtons,
  133.                         MUIA_Group_Child,fileStrings,TAG_DONE])
  134.     la_NoDelay    :=Mui_MakeObjectA(MUIO_Label,['No delay',0])
  135.     mrapp.ch_Nodelay:=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,
  136.                     MUIA_Weight,20,
  137.                                     MUIA_InputMode,MUIV_InputMode_Toggle,
  138.                                     MUIA_Image_Spec,MUII_CheckMark,
  139.                                     MUIA_Image_FreeVert,MUI_TRUE,
  140.                                     MUIA_Selected,FALSE,
  141.                                     MUIA_ShowSelState,FALSE,TAG_DONE])
  142.     obj_aux9      :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  143.     obj_aux8      :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  144.                                     MUIA_Group_Columns,2,
  145.                                     MUIA_Group_Child,obj_aux9,
  146.                                     MUIA_Group_Child,mrapp.ch_Nodelay,TAG_DONE])
  147.     la_NoRexx     :=Mui_MakeObjectA(MUIO_Label,['No ARexx',0])
  148.     mrapp.ch_Norexx :=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,
  149.                     MUIA_Weight,20,
  150.                                     MUIA_InputMode,MUIV_InputMode_Toggle,
  151.                                     MUIA_Image_Spec,MUII_CheckMark,
  152.                                     MUIA_Image_FreeVert,MUI_TRUE,
  153.                                     MUIA_Selected,FALSE,
  154.                                     MUIA_ShowSelState,FALSE,TAG_DONE])
  155.     obj_aux13     :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  156.     obj_aux12     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  157.                                     MUIA_Group_Columns,2,
  158.                                     MUIA_Group_Child,obj_aux13,
  159.                                     MUIA_Group_Child,mrapp.ch_Norexx,TAG_DONE])
  160.     la_Workbench  :=Mui_MakeObjectA(MUIO_Label,['On workbench',0])
  161.     mrapp.ch_Workbench:=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,
  162.                     MUIA_Weight,20,
  163.                     MUIA_InputMode,MUIV_InputMode_Toggle,
  164.                     MUIA_Image_Spec,MUII_CheckMark,
  165.                     MUIA_Image_FreeVert,MUI_TRUE,
  166.                     MUIA_Selected,FALSE,
  167.                     MUIA_ShowSelState,FALSE,TAG_DONE])
  168.     obj_aux11     :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  169.     obj_aux10     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  170.                     MUIA_Group_Columns,2,
  171.                     MUIA_Group_Child,obj_aux11,
  172.                     MUIA_Group_Child,mrapp.ch_Workbench,TAG_DONE])
  173.     la_Userscreen :=Mui_MakeObjectA(MUIO_Label,['On userscreen',0])
  174.     mrapp.ch_Userscreen:=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,
  175.                     MUIA_Weight,20,
  176.                     MUIA_InputMode,MUIV_InputMode_Toggle,
  177.                     MUIA_Image_Spec,MUII_CheckMark,
  178.                     MUIA_Image_FreeVert,MUI_TRUE,
  179.                     MUIA_Selected,FALSE,
  180.                     MUIA_ShowSelState,FALSE,TAG_DONE])
  181.     obj_aux15     :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  182.     obj_aux14     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  183.                         MUIA_Group_Columns,2,
  184.                     MUIA_Group_Child,obj_aux15,
  185.                     MUIA_Group_Child,mrapp.ch_Userscreen,TAG_DONE])
  186.     mrapp.sl_Delay:=Mui_NewObjectA('Slider.mui',[TAG_IGNORE,0,
  187.                                     MUIA_Weight,5,
  188.                                     MUIA_Slider_Min,0,MUIA_Slider_Max,10,
  189.                                     MUIA_Slider_Level,0,TAG_DONE])
  190.     obj_aux29     :=Mui_MakeObjectA(MUIO_Label,['Time',MUIO_Label_DoubleFrame])    
  191.     obj_aux28     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  192.                                     MUIA_Group_Columns,2,
  193.                                     MUIA_Group_Child,obj_aux29,
  194.                                     MUIA_Group_Child,mrapp.sl_Delay,TAG_DONE])
  195.  
  196.     miscGr1       :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'MiscGr1',
  197.                                     MUIA_Group_Rows,2,
  198.                         MUIA_Group_Child,la_NoDelay,
  199.                         MUIA_Group_Child,obj_aux8,
  200.                     MUIA_Group_Child,la_Workbench,
  201.                     MUIA_Group_Child,obj_aux10,
  202.                     MUIA_Group_Child,la_NoRexx,
  203.                     MUIA_Group_Child,obj_aux12,
  204.                     MUIA_Group_Child,la_Userscreen,
  205.                     MUIA_Group_Child,obj_aux14,TAG_DONE])
  206.  
  207.     la_Delay      :=Mui_MakeObjectA(MUIO_Label,['Delay',0])
  208.     mrapp.sl_Delay:=Mui_NewObjectA('Slider.mui',[TAG_IGNORE,0,MUIA_HelpNode,'SL_Delay',
  209.                     MUIA_Weight,20,
  210.                     MUIA_Frame,MUIV_Frame_Slider,
  211.                     MUIA_Slider_Min,0,
  212.                     MUIA_Slider_Max,10,
  213.                     MUIA_Slider_Level,0,TAG_DONE])
  214.  
  215.     miscGr2       :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'MiscGr2',
  216.                     MUIA_Group_Rows,1,
  217.                     MUIA_Group_Child,la_Delay,
  218.                     MUIA_Group_Child,mrapp.sl_Delay,TAG_DONE])
  219.  
  220.     misc          :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'Misc',
  221.                     MUIA_Weight,50,
  222.                     MUIA_Group_Rows,1,
  223.                     MUIA_Group_Child,miscGr1,
  224.                     MUIA_Group_Child,miscGr2,TAG_DONE])
  225.  
  226.     la_NoOpen     :=Mui_MakeObjectA(MUIO_Label,['No open()',0])
  227.     mrapp.ch_Noopen :=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,MUIA_Frame,MUIV_Frame_ImageButton,
  228.                     MUIA_InputMode,MUIV_InputMode_Toggle,
  229.                     MUIA_Image_Spec,MUII_CheckMark,
  230.                     MUIA_Image_FreeVert,MUI_TRUE,
  231.                     MUIA_Selected,FALSE,
  232.                     MUIA_Background,MUII_ButtonBack,
  233.                     MUIA_ShowSelState,FALSE,TAG_DONE])
  234.     obj_aux17     :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  235.     obj_aux16     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  236.                     MUIA_Group_Columns,2,
  237.                     MUIA_Group_Child,obj_aux17,
  238.                     MUIA_Group_Child,mrapp.ch_Noopen,TAG_DONE])
  239.     la_NoWrite    :=Mui_MakeObjectA(MUIO_Label,['No write()',0])
  240.     mrapp.ch_Nowrite:=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,MUIA_Frame,MUIV_Frame_ImageButton,
  241.                     MUIA_InputMode,MUIV_InputMode_Toggle,
  242.                     MUIA_Image_Spec,MUII_CheckMark,
  243.                     MUIA_Image_FreeVert,MUI_TRUE,
  244.                     MUIA_Selected,FALSE,
  245.                     MUIA_Background,MUII_ButtonBack,
  246.                     MUIA_ShowSelState,FALSE,TAG_DONE])
  247.     obj_aux19     :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  248.     obj_aux18     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  249.                     MUIA_Group_Columns,2,
  250.                     MUIA_Group_Child,obj_aux19,
  251.                     MUIA_Group_Child,mrapp.ch_Nowrite,TAG_DONE])
  252.     dos           :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'Dos',
  253.                     MUIA_Weight,20,
  254.                     MUIA_Group_Rows,2,
  255.                     MUIA_Group_Child,la_NoOpen,
  256.                     MUIA_Group_Child,obj_aux16,
  257.                     MUIA_Group_Child,la_NoWrite,
  258.                     MUIA_Group_Child,obj_aux18,TAG_DONE])
  259.  
  260.     la_Cold       :=Mui_MakeObjectA(MUIO_Label,['Cold',0])
  261.     mrapp.ch_Cold :=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,
  262.                     MUIA_Weight,20,
  263.                                     MUIA_InputMode,MUIV_InputMode_Toggle,
  264.                                     MUIA_Image_Spec,MUII_CheckMark,
  265.                                     MUIA_Image_FreeVert,MUI_TRUE,
  266.                                     MUIA_Selected,FALSE,
  267.                                     MUIA_ShowSelState,FALSE,TAG_DONE])
  268.     obj_aux1      :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  269.     obj_aux0      :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  270.                                     MUIA_Group_Columns,2,
  271.                                     MUIA_Group_Child,obj_aux1,
  272.                                     MUIA_Group_Child,mrapp.ch_Cold,TAG_DONE])
  273.     la_KickMem    :=Mui_MakeObjectA(MUIO_Label,['KickMem',0])
  274.     mrapp.ch_Kickmem:=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,
  275.                     MUIA_Weight,20,
  276.                                     MUIA_InputMode,MUIV_InputMode_Toggle,
  277.                                     MUIA_Image_Spec,MUII_CheckMark,
  278.                                     MUIA_Image_FreeVert,MUI_TRUE,
  279.                                     MUIA_Selected,FALSE,
  280.                                     MUIA_ShowSelState,FALSE,TAG_DONE])
  281.     obj_aux3      :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  282.     obj_aux2      :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  283.                                     MUIA_Group_Columns,2,
  284.                                     MUIA_Group_Child,obj_aux3,
  285.                                   MUIA_Group_Child,mrapp.ch_Kickmem,TAG_DONE])
  286.     la_Cool      :=Mui_MakeObjectA(MUIO_Label,['Cool',0])
  287.     mrapp.ch_Cool :=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,
  288.                     MUIA_Weight,20,
  289.                                     MUIA_InputMode,MUIV_InputMode_Toggle,
  290.                                     MUIA_Image_Spec,MUII_CheckMark,
  291.                                     MUIA_Image_FreeVert,MUI_TRUE,
  292.                                     MUIA_Selected,FALSE,
  293.                                     MUIA_ShowSelState,FALSE,TAG_DONE])
  294.     obj_aux5      :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  295.     obj_aux4      :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  296.                                     MUIA_Group_Columns,2,
  297.                                     MUIA_Group_Child,obj_aux5,
  298.                                     MUIA_Group_Child,mrapp.ch_Cool,TAG_DONE])
  299.     la_KickTag    :=Mui_MakeObjectA(MUIO_Label,['KickTag',0])
  300.     mrapp.ch_Kicktag:=Mui_NewObjectA('Image.mui',[TAG_IGNORE,0,
  301.                     MUIA_Weight,20,
  302.                                     MUIA_InputMode,MUIV_InputMode_Toggle,
  303.                                     MUIA_Image_Spec,MUII_CheckMark,
  304.                                     MUIA_Image_FreeVert,MUI_TRUE,
  305.                                     MUIA_Selected,FALSE,
  306.                                     MUIA_ShowSelState,FALSE,TAG_DONE])
  307.     obj_aux7      :=Mui_MakeObjectA(MUIO_Label,['',MUIO_Label_DoubleFrame])
  308.     obj_aux6      :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  309.                                     MUIA_Group_Columns,2,
  310.                                     MUIA_Group_Child,obj_aux7,
  311.                                     MUIA_Group_Child,mrapp.ch_Kicktag,TAG_DONE])
  312.     vectors       :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'Vectors',
  313.                                     MUIA_Weight,20,MUIA_Group_Rows,2,
  314.                                     MUIA_Group_Child,la_Cold,
  315.                                     MUIA_Group_Child,obj_aux0,
  316.                                     MUIA_Group_Child,la_KickMem,
  317.                                     MUIA_Group_Child,obj_aux2,
  318.                                     MUIA_Group_Child,la_Cool,
  319.                                     MUIA_Group_Child,obj_aux4,
  320.                                     MUIA_Group_Child,la_KickTag,
  321.                                     MUIA_Group_Child,obj_aux6,TAG_DONE])
  322.     options       :=Mui_NewObjectA('Register.mui',[TAG_IGNORE,0 ,
  323.                     MUIA_Register_Titles,mrapp.stR_Options,
  324.                     MUIA_HelpNode,'Options',
  325.                     MUIA_Weight,20,
  326.                     MUIA_Group_Child,files,
  327.                     MUIA_Group_Child,vectors,
  328.                     MUIA_Group_Child,misc,
  329.                     MUIA_Group_Child,dos,TAG_DONE])
  330.     line1         :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'Line1',
  331.                     MUIA_Frame,MUIV_Frame_Text,
  332.                     MUIA_Group_Horiz,MUI_TRUE,
  333.                     MUIA_Group_Child,options,TAG_DONE])
  334.     mrapp.bt_PicPos:=Mui_MakeObjectA(MUIO_Button,['PicPos'])
  335.     mrapp.stR_Picx :=Mui_NewObjectA('String.mui',[TAG_IGNORE,0,MUIA_Frame,MUIV_Frame_String,
  336.                     MUIA_HelpNode,'STR_Picx',
  337.                     MUIA_String_Accept,'-0123456789',
  338.                     MUIA_String_MaxLen,4,
  339.                     MUIA_String_Format,MUIV_String_Format_Center,TAG_DONE])
  340.     obj_aux21     :=Mui_MakeObjectA(MUIO_Label,['X',MUIO_Label_DoubleFrame])
  341.     obj_aux20     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  342.                     MUIA_Group_Columns,2,
  343.                     MUIA_Group_Child,obj_aux21,
  344.                     MUIA_Group_Child,mrapp.stR_Picx,TAG_DONE])
  345.     mrapp.stR_Picy :=Mui_NewObjectA('String.mui',[TAG_IGNORE,0,MUIA_Frame,MUIV_Frame_String,
  346.                     MUIA_HelpNode,'STR_Picy',
  347.                     MUIA_String_Accept,'-0123456789',
  348.                     MUIA_String_MaxLen,4,
  349.                     MUIA_String_Format,MUIV_String_Format_Center,TAG_DONE])
  350.     obj_aux23     :=Mui_MakeObjectA(MUIO_Label,['Y',MUIO_Label_DoubleFrame])
  351.     obj_aux22     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  352.                     MUIA_Group_Columns,2,
  353.                     MUIA_Group_Child,obj_aux23,
  354.                     MUIA_Group_Child,mrapp.stR_Picy,TAG_DONE])
  355.     mrapp.bt_Vecpos:=Mui_MakeObjectA(MUIO_Button,['VecPos'])
  356.     mrapp.stR_Vecx := Mui_NewObjectA('String.mui',[TAG_IGNORE,0,MUIA_Frame,MUIV_Frame_String,
  357.                     MUIA_HelpNode,'STR_Vecx',
  358.                     MUIA_String_Accept,'-0123456789',
  359.                     MUIA_String_MaxLen,4,
  360.                     MUIA_String_Format,MUIV_String_Format_Center,TAG_DONE])
  361.     obj_aux25     :=Mui_MakeObjectA(MUIO_Label,['X',MUIO_Label_DoubleFrame])
  362.     obj_aux24     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  363.                     MUIA_Group_Columns,2,
  364.                     MUIA_Group_Child,obj_aux25,
  365.                     MUIA_Group_Child,mrapp.stR_Vecx,TAG_DONE])
  366.     mrapp.stR_Vecy :=Mui_NewObjectA('String.mui',[TAG_IGNORE,0,MUIA_Frame,MUIV_Frame_String,
  367.                     MUIA_HelpNode,'STR_Vecy',
  368.                         MUIA_String_Accept,'-0123456789',
  369.                     MUIA_String_MaxLen,4,
  370.                     MUIA_String_Format,MUIV_String_Format_Center,TAG_DONE])
  371.     obj_aux27     :=Mui_MakeObjectA(MUIO_Label,['Y',MUIO_Label_DoubleFrame])
  372.     obj_aux26     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  373.                     MUIA_Group_Columns,2,
  374.                     MUIA_Group_Child,obj_aux27,
  375.                     MUIA_Group_Child,mrapp.stR_Vecy,TAG_DONE])
  376.     positions     :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'Positions',
  377.                     MUIA_Weight,10,MUIA_Group_Horiz,MUI_TRUE,
  378.                     MUIA_Group_Child,mrapp.bt_PicPos,
  379.                     MUIA_Group_Child,obj_aux20,
  380.                     MUIA_Group_Child,obj_aux22,
  381.                     MUIA_Group_Child,mrapp.bt_Vecpos,
  382.                     MUIA_Group_Child,obj_aux24,
  383.                     MUIA_Group_Child,obj_aux26,TAG_DONE])
  384.     line2         :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'Line2',
  385.                     MUIA_Frame,MUIV_Frame_Text,
  386.                     MUIA_Group_Child,positions,TAG_DONE])
  387.     mrapp.bt_Load  :=Mui_MakeObjectA(MUIO_Button,['Load'])
  388.     mrapp.bt_Save  :=Mui_MakeObjectA(MUIO_Button,['Save'])
  389.     mrapp.bt_Info  :=Mui_MakeObjectA(MUIO_Button,['Info'])
  390.     mrapp.bt_Test  :=Mui_MakeObjectA(MUIO_Button,['Test'])
  391.     mrapp.bt_Remove:=Mui_MakeObjectA(MUIO_Button,['Rmve'])
  392.     mrapp.bt_Quit  :=Mui_MakeObjectA(MUIO_Button,['Quit'])
  393.     line3          :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,MUIA_HelpNode,'Line3',
  394.                     MUIA_Frame,MUIV_Frame_Text,
  395.                     MUIA_Group_Horiz,MUI_TRUE,
  396.                     MUIA_Group_Child,mrapp.bt_Load,
  397.                     MUIA_Group_Child,mrapp.bt_Save,
  398.                     MUIA_Group_Child,mrapp.bt_Info,
  399.                     MUIA_Group_Child,mrapp.bt_Test,
  400.                     MUIA_Group_Child,mrapp.bt_Remove,
  401.                     MUIA_Group_Child,mrapp.bt_Quit,TAG_DONE])
  402.     roOT           :=Mui_NewObjectA('Group.mui',[TAG_IGNORE,0,
  403.                     MUIA_Group_Child,line1,
  404.                     MUIA_Group_Child,line2,
  405.                     MUIA_Group_Child,line3,TAG_DONE])
  406.     mrapp.roOTWINDOW:=Mui_NewObjectA('Window.mui',[TAG_IGNORE,0,
  407.                     MUIA_Window_Title,'MultiResetPrefs',
  408.                     MUIA_Window_ID,"0WIN",
  409.                     MUIA_Window_RootObject,roOT,TAG_DONE])
  410.     mrapp.app      :=Mui_NewObjectA('Application.mui',[TAG_IGNORE,0,
  411.                     MUIA_Application_Author,'Frank Fenn',
  412.                     MUIA_Application_Base,'MultiReset',
  413.                     MUIA_Application_Title,'MultiReset' ,
  414.                     MUIA_Application_Version,'$VER: 3.0 (02.12.95)',
  415.                     MUIA_Application_Copyright,'f.fenn@cross.berlinet.de',
  416.                     MUIA_Application_Description,'Resethandler',
  417.                                     MUIA_Application_DiskObject,mricon,
  418.                     MUIA_Application_Window,mrapp.roOTWINDOW,TAG_DONE])
  419.  
  420.    IF mrapp.app=NIL THEN Dispose(mrapp)
  421.  
  422. ENDPROC mrapp
  423.  
  424. PROC dispose_app(myapp:PTR TO app_obj)
  425.   Mui_DisposeObject(myapp.app)
  426.   Dispose(myapp)
  427. ENDPROC
  428.  
  429. PROC init_notifications_app(myapp:PTR TO app_obj)
  430.  
  431.   domethod(myapp.bt_Sfx,[MUIM_Notify,MUIA_Pressed,FALSE,
  432.            myapp.app,2,MUIM_Application_ReturnID,GETSFX])
  433.   domethod(myapp.bt_Gfx,[MUIM_Notify,MUIA_Pressed,FALSE,
  434.            myapp.app,2,MUIM_Application_ReturnID,GETGFX])
  435.   domethod(myapp.bt_Log,[MUIM_Notify,MUIA_Pressed,FALSE,
  436.            myapp.app,2,MUIM_Application_ReturnID,GETLOG])
  437.   domethod(myapp.bt_Dos,[MUIM_Notify,MUIA_Pressed,FALSE,
  438.            myapp.app,2,MUIM_Application_ReturnID,GETDOS])
  439.  
  440.   domethod(myapp.bt_Load,[MUIM_Notify,MUIA_Pressed,FALSE,
  441.            myapp.app,2,MUIM_Application_ReturnID,GETLOAD])
  442.   domethod(myapp.bt_Save,[MUIM_Notify,MUIA_Pressed,FALSE,
  443.            myapp.app,2,MUIM_Application_ReturnID,GETSAVE])
  444.   domethod(myapp.bt_Test,[MUIM_Notify,MUIA_Pressed,FALSE,
  445.            myapp.app,2,MUIM_Application_ReturnID,GETTEST])
  446.   domethod(myapp.bt_Info,[MUIM_Notify,MUIA_Pressed,FALSE,
  447.            myapp.app,2,MUIM_Application_ReturnID,GETINFO])
  448.   domethod(myapp.bt_Remove,[MUIM_Notify,MUIA_Pressed,FALSE,
  449.            myapp.app,2,MUIM_Application_ReturnID,GETRMVE])
  450.   domethod(myapp.bt_Quit,[MUIM_Notify,MUIA_Pressed,FALSE,
  451.            myapp.app,2,MUIM_Application_ReturnID,GETQUIT])
  452.  
  453.   domethod(myapp.stR_Sfx,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  454.            myapp.app,2,MUIM_Application_ReturnID,GETSTRSFX])
  455.   domethod(myapp.stR_Gfx,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  456.            myapp.app,2,MUIM_Application_ReturnID,GETSTRGFX])
  457.   domethod(myapp.stR_Log,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  458.            myapp.app,2,MUIM_Application_ReturnID,GETSTRLOG])
  459.   domethod(myapp.stR_Dos,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  460.            myapp.app,2,MUIM_Application_ReturnID,GETSTRDOS])
  461.  
  462.   domethod(myapp.bt_PicPos,[MUIM_Notify,MUIA_Pressed,MUI_TRUE,
  463.            myapp.app,2,MUIM_Application_ReturnID,GETPICPOS])
  464.   domethod(myapp.stR_Picx,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  465.            myapp.app,2,MUIM_Application_ReturnID,GETPICX])
  466.   domethod(myapp.stR_Picy,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  467.            myapp.app,2,MUIM_Application_ReturnID,GETPICY])
  468.   domethod(myapp.bt_Vecpos,[MUIM_Notify,MUIA_Pressed,MUI_TRUE,
  469.            myapp.app,2,MUIM_Application_ReturnID,GETVECPOS])
  470.   domethod(myapp.stR_Vecx,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  471.            myapp.app,2,MUIM_Application_ReturnID,GETVECX])
  472.   domethod(myapp.stR_Vecy,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,
  473.            myapp.app,2,MUIM_Application_ReturnID,GETVECY])
  474.  
  475.   domethod(myapp.ch_Cold,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  476.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETCOLD])
  477.   domethod(myapp.ch_Cool,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  478.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETCOOL])
  479.   domethod(myapp.ch_Kickmem,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  480.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETMEM])
  481.   domethod(myapp.ch_Kicktag,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  482.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETTAG])
  483.   domethod(myapp.ch_Workbench,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  484.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETWB])
  485.   domethod(myapp.ch_Userscreen,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  486.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETSCR])
  487.   domethod(myapp.ch_Nowrite,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  488.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETWRITE])
  489.   domethod(myapp.ch_Noopen,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  490.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETOPEN])
  491.   domethod(myapp.ch_Nodelay,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  492.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETWAIT])
  493.   domethod(mrapp.ch_Norexx,[MUIM_Notify,MUIA_Selected,MUIV_EveryTime,
  494.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETREXX])
  495.   domethod(mrapp.sl_Delay,[MUIM_Notify,MUIA_Slider_Level,MUIV_EveryTime,
  496.            myapp.app,4,MUIM_CallHook,mrhook,MUIV_TriggerValue,GETDELAY])
  497.  
  498.   domethod(myapp.roOTWINDOW,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,
  499.            myapp.app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit])
  500.   domethod(myapp.roOTWINDOW,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,
  501.            myapp.roOTWINDOW,3,MUIM_Set,MUIA_Window_Open,FALSE])
  502.  
  503.   SetAttrsA(myapp.roOTWINDOW ,[Eval(`(MUIA_Window_Open)), MUI_TRUE,TAG_DONE])
  504. ENDPROC
  505.  
  506. PROC installhook(hook,func)
  507. DEF r
  508.   MOVE.L hook,A0
  509.   MOVE.L func,12(A0)
  510.   LEA hookentry(PC),A1
  511.   MOVE.L A1,8(A0)    
  512.   MOVE.L A4,16(A0)
  513.   MOVE.L A0,r
  514. ENDPROC r
  515.  
  516. hookentry:
  517.   MOVEM.L D2-D7/A2-A6,-(A7)
  518.   MOVE.L 16(A0),A4
  519.   MOVE.L A0,-(A7)
  520.   MOVE.L A2,-(A7)
  521.   MOVE.L A1,-(A7)
  522.   MOVE.L 12(A0),A0
  523.   JSR (A0)
  524.   LEA 12(A7),A7    
  525.   MOVEM.L (A7)+,D2-D7/A2-A6
  526.   RTS
  527.  
  528. PROC domethod(obj:PTR TO object,msg:PTR TO msg)
  529. DEF h:PTR TO hook,o:PTR TO object,d
  530.   IF obj
  531.     o :=obj-SIZEOF object    
  532.     h :=o.class
  533.     d :=h.entry
  534.     MOVEA.L h,A0
  535.     MOVEA.L msg,A1
  536.     MOVEA.L obj,A2    
  537.     MOVEA.L d,A3
  538.     JSR     (A3)    
  539.     MOVE.L  D0,o
  540.     RETURN o
  541.   ENDIF
  542. ENDPROC NIL
  543.  
  544. PROC movewindow(left,top,xsize,ysize)
  545. DEF leftedge,topedge,scr:PTR TO screen,hostx,hosty,win:PTR TO window
  546.   scr:=LockPubScreen('Workbench')
  547.   hostx:=scr.width
  548.   hosty:=scr.height
  549.   IF mrprefs.pos[left]=-1 THEN leftedge:=(hostx-xsize)/2 ELSE leftedge:=mrprefs.pos[left]
  550.   IF mrprefs.pos[top] =-1 THEN topedge :=(hosty-ysize)/2 ELSE topedge:=mrprefs.pos[top]
  551.   IF win:=OpenWindowTagList(0,[WA_LEFT,leftedge,
  552.                                WA_TOP,topedge,
  553.                                WA_INNERWIDTH,xsize,
  554.                                WA_INNERHEIGHT,ysize,
  555.                                WA_TITLE,'move window - close to exit',
  556.                                WA_FLAGS,WFLG_DRAGBAR + WFLG_CLOSEGADGET,
  557.                                WA_IDCMP,IDCMP_CLOSEWINDOW,0])
  558.     WaitIMessage(win)
  559.     mrprefs.pos[left]:=win.leftedge
  560.     mrprefs.pos[top] :=win.topedge
  561.     CloseW(win)
  562.   ENDIF
  563.   UnlockPubScreen(scr,NIL)
  564. ENDPROC
  565.  
  566. PROC picturepos()
  567. DEF ilbm,width,height,bmh:PTR TO bmhd,pi:PTR TO picinfo,wbscreen,
  568.     dtbitmap:PTR TO bitmap,dtbitmapheader:PTR TO bitmapheader,dtobject:PTR TO object
  569.  
  570.   wbscreen:=LockPubScreen('Workbench')
  571.   IF KickVersion(39)
  572.     datatypesbase:=OpenLibrary('datatypes.library',0)
  573.     IF (dtobject:=NewDTObjectA(mrprefs.gfxpath,[DTA_SOURCETYPE,DTST_FILE,
  574.                                                 DTA_GROUPID,GID_PICTURE,
  575.                                                 PDTA_REMAP,FALSE,
  576.                                                 OBP_PRECISION,PRECISION_IMAGE,NIL]))
  577.       DoDTMethodA(dtobject,NIL,NIL,[DTM_PROCLAYOUT,0,1])
  578.       GetDTAttrsA(dtobject,[PDTA_BITMAP,{dtbitmap},PDTA_BITMAPHEADER,{dtbitmapheader},NIL])
  579.       width :=dtbitmapheader.width
  580.       height:=dtbitmapheader.height
  581.       movewindow(0,1,width,height)
  582.       IF dtobject      THEN DisposeDTObject(dtobject)
  583.       IF datatypesbase THEN CloseLibrary(datatypesbase)
  584.     ENDIF
  585.   ELSE
  586.     IF (ilbm:=ilbm_New(mrprefs.gfxpath,0))<>NIL
  587.       pi    :=ilbm_PictureInfo(ilbm)
  588.       bmh   :=pi.bmhd
  589.       width :=bmh.w
  590.       height:=bmh.h
  591.       ilbm_Dispose(ilbm)
  592.       movewindow(0,1,width,height)
  593.     ENDIF
  594.   ENDIF
  595.   UnlockPubScreen(wbscreen,NIL)
  596.   setgads()
  597. ENDPROC
  598.  
  599. PROC vectorpos()
  600.   movewindow(2,3,200,90)
  601.   setgads()
  602. ENDPROC
  603.  
  604. PROC load()
  605. DEF file
  606.   IF (file:=Open('ENV:MultiReset.prefs',OLDFILE))<>NIL
  607.     Read(file,mrprefs,SIZEOF prefs)
  608.     Close(file)
  609.   ELSE
  610.     AstrCopy(mrprefs.sfxpath,'ENV:ResetSound',ALL)
  611.     AstrCopy(mrprefs.gfxpath,'ENV:ResetPic',ALL)
  612.     AstrCopy(mrprefs.dospath,'\0',ALL)
  613.     AstrCopy(mrprefs.logpath,'\0',ALL)
  614.     mrprefs.vectors[0]:=FALSE
  615.     mrprefs.vectors[1]:=FALSE
  616.     mrprefs.vectors[2]:=FALSE
  617.     mrprefs.vectors[3]:=FALSE
  618.     mrprefs.workbench :=TRUE
  619.     mrprefs.userscreen:=FALSE
  620.     mrprefs.noopen    :=FALSE
  621.     mrprefs.nowrite   :=FALSE
  622.     mrprefs.pos[0]    :=-1
  623.     mrprefs.pos[1]    :=-1
  624.     mrprefs.pos[2]    :=-1
  625.     mrprefs.pos[3]    :=-1
  626.     mrprefs.nowait    :=FALSE
  627.     mrprefs.ver       :=21
  628.     save()
  629.   ENDIF
  630. ENDPROC
  631.  
  632. PROC setgads()
  633.   domethod(mrapp.stR_Sfx,[MUIM_Set,MUIA_String_Contents,mrprefs.sfxpath])
  634.   domethod(mrapp.stR_Gfx,[MUIM_Set,MUIA_String_Contents,mrprefs.gfxpath])
  635.   domethod(mrapp.stR_Log,[MUIM_Set,MUIA_String_Contents,mrprefs.logpath])
  636.   domethod(mrapp.stR_Dos,[MUIM_Set,MUIA_String_Contents,mrprefs.dospath])
  637.  
  638.   domethod(mrapp.ch_Cold,[MUIM_Set,MUIA_Selected,mrprefs.vectors[0]])
  639.   domethod(mrapp.ch_Cool,[MUIM_Set,MUIA_Selected,mrprefs.vectors[1]])
  640.   domethod(mrapp.ch_Kickmem,[MUIM_Set,MUIA_Selected,mrprefs.vectors[2]])
  641.   domethod(mrapp.ch_Kicktag,[MUIM_Set,MUIA_Selected,mrprefs.vectors[3]])
  642.   domethod(mrapp.ch_Workbench,[MUIM_Set,MUIA_Selected,mrprefs.workbench])
  643.   domethod(mrapp.ch_Userscreen,[MUIM_Set,MUIA_Selected,mrprefs.userscreen])
  644.   domethod(mrapp.ch_Noopen,[MUIM_Set,MUIA_Selected,mrprefs.noopen])
  645.   domethod(mrapp.ch_Nowrite,[MUIM_Set,MUIA_Selected,mrprefs.nowrite])
  646.   domethod(mrapp.ch_Nodelay,[MUIM_Set,MUIA_Selected,mrprefs.nowait])
  647.   domethod(mrapp.ch_Norexx,[MUIM_Set,MUIA_Selected,mrprefs.norexx])
  648.  
  649.   domethod(mrapp.stR_Picx,[MUIM_Set,MUIA_String_Integer,mrprefs.pos[0]])
  650.   domethod(mrapp.stR_Picx,[MUIM_Set,MUIA_String_DisplayPos,1])
  651.   domethod(mrapp.stR_Picy,[MUIM_Set,MUIA_String_Integer,mrprefs.pos[1]])
  652.   domethod(mrapp.stR_Picy,[MUIM_Set,MUIA_String_DisplayPos,1])
  653.   domethod(mrapp.stR_Vecx,[MUIM_Set,MUIA_String_Integer,mrprefs.pos[2]])
  654.   domethod(mrapp.stR_Vecx,[MUIM_Set,MUIA_String_DisplayPos,1])
  655.   domethod(mrapp.stR_Vecy,[MUIM_Set,MUIA_String_Integer,mrprefs.pos[3]])
  656.   domethod(mrapp.stR_Vecy,[MUIM_Set,MUIA_String_DisplayPos,1])
  657.  
  658. ENDPROC
  659.  
  660. PROC save()
  661. DEF file
  662.   file:=Open('ENV:Multireset.prefs',NEWFILE)
  663.   Write(file,mrprefs,SIZEOF prefs)
  664.   Close(file)
  665.   file:=Open('ENVARC:Multireset.prefs',NEWFILE)
  666.   Write(file,mrprefs,SIZEOF prefs)
  667.   Close(file)
  668. ENDPROC
  669.  
  670. PROC frequest()
  671. DEF ret,request:PTR TO filerequester
  672.   aslbase:=OpenLibrary('asl.library',0)
  673.   IF request:=AllocAslRequest(ASL_FILEREQUEST,[ASL_DIR,mrdir,0])
  674.     IF RequestFile(request)
  675.       StrCopy(mrfile,request.drawer,ALL)
  676.       AddPart(mrfile,request.file,80)
  677.       ret:=TRUE
  678.     ELSE
  679.       ret:=FALSE
  680.     ENDIF
  681.     FreeFileRequest(request)
  682.   ENDIF
  683.   CloseLibrary(aslbase)
  684. ENDPROC ret
  685.  
  686. PROC getasl(mode)
  687. DEF pathpos
  688.   SELECT mode
  689.     CASE 1
  690.       pathpos:=PathPart(mrprefs.sfxpath)
  691.       MidStr(mrdir,mrprefs.sfxpath,0,pathpos-mrprefs.sfxpath)
  692.     CASE 2
  693.       pathpos:=PathPart(mrprefs.gfxpath)
  694.       MidStr(mrdir,mrprefs.gfxpath,0,pathpos-mrprefs.gfxpath)
  695.     CASE 3
  696.       pathpos:=PathPart(mrprefs.logpath)
  697.       MidStr(mrdir,mrprefs.logpath,0,pathpos-mrprefs.logpath)
  698.     CASE 4
  699.       pathpos:=PathPart(mrprefs.dospath)
  700.       MidStr(mrdir,mrprefs.dospath,0,pathpos-mrprefs.dospath)
  701.   ENDSELECT
  702.   IF frequest() 
  703.     SELECT mode
  704.       CASE 1
  705.         AstrCopy(mrprefs.sfxpath,mrfile,ALL)
  706.       CASE 2
  707.         AstrCopy(mrprefs.gfxpath,mrfile,ALL)
  708.       CASE 3
  709.         AstrCopy(mrprefs.logpath,mrfile,ALL)
  710.       CASE 4
  711.         AstrCopy(mrprefs.dospath,mrfile,ALL)
  712.     ENDSELECT
  713.     setgads()
  714.   ENDIF
  715. ENDPROC
  716.  
  717. PROC testsettings(mode)
  718. DEF testport:PTR TO mp,testmsg:PTR TO mrmsg,testreply:PTR TO mp,msgreply
  719.   IF (testport:=FindPort('MultiResetPort'))<>NIL
  720.     testreply:=CreateMsgPort()
  721.     testmsg  :=New(SIZEOF mrmsg)
  722.     testmsg::ln.type     :=NT_MESSAGE
  723.     testmsg::mn.replyport:=testreply
  724.     testmsg::mn.length   :=SIZEOF mrmsg
  725.     testmsg.mode         :=mode
  726.     testmsg.prefs        :=mrprefs
  727.     PutMsg(testport,testmsg)
  728.     REPEAT
  729.       msgreply:=WaitPort(testreply)
  730.       msgreply:=GetMsg(testreply)
  731.     UNTIL msgreply=testmsg
  732.     Dispose(testmsg)
  733.     DeleteMsgPort(testreply)
  734.   ELSE 
  735.     Mui_RequestA(mrapp.app,NIL,NIL,NIL,'_Okay','MultiReset nicht aktiv',NIL)
  736.   ENDIF  
  737. ENDPROC
  738.  
  739. PROC mrhookfunc(obj,msg)
  740. DEF arg:PTR TO LONG,gad
  741.   arg:=msg
  742.   gad:=arg[1]
  743.   SELECT gad
  744.     CASE GETCOLD
  745.        mrprefs.vectors[0]:=arg[0]
  746.     CASE GETCOOL
  747.        mrprefs.vectors[1]:=arg[0]
  748.     CASE GETMEM
  749.        mrprefs.vectors[2]:=arg[0]
  750.     CASE GETTAG
  751.        mrprefs.vectors[3]:=arg[0]
  752.     CASE GETWB
  753.        mrprefs.workbench :=arg[0]
  754.     CASE GETSCR
  755.        mrprefs.userscreen:=arg[0]
  756.     CASE GETOPEN
  757.        mrprefs.noopen    :=arg[0]
  758.     CASE GETWRITE
  759.        mrprefs.nowrite   :=arg[0]
  760.     CASE GETWAIT
  761.        mrprefs.nowait    :=arg[0]
  762.        IF arg[0]=FALSE
  763.          domethod(mrapp.sl_Delay,[MUIM_Set,MUIA_Disabled,FALSE])
  764.        ELSE
  765.          domethod(mrapp.sl_Delay,[MUIM_Set,MUIA_Disabled,MUI_TRUE])
  766.        ENDIF
  767.     CASE GETREXX
  768.        mrprefs.norexx    :=arg[0]
  769.     CASE GETDELAY
  770.        mrprefs.time      :=arg[0]
  771.        IF arg[0]=0 
  772.          domethod(mrapp.ch_Nodelay,[MUIM_Set,MUIA_Selected,MUI_TRUE])
  773.        ELSE
  774.          domethod(mrapp.ch_Nodelay,[MUIM_Set,MUIA_Selected,FALSE])
  775.        ENDIF
  776.   ENDSELECT
  777. ENDPROC
  778.  
  779. PROC closeall()
  780.   IF mricon        THEN FreeDiskObject(mricon)
  781.   IF mrapp         THEN dispose_app(mrapp)
  782.   IF iconbase      THEN CloseLibrary(iconbase)
  783.   IF muimasterbase THEN CloseLibrary(muimasterbase)
  784.   IF mrprefs       THEN Dispose(mrprefs)
  785. ENDPROC
  786.  
  787. PROC reporterr(error)
  788. DEF errlist:PTR TO LONG
  789.   errlist:=['Can\at open "muimasterlibrary v8+"',
  790.             'Can\at open "icon.library v37+"']
  791.   Mui_RequestA(mrapp.app,NIL,NIL,NIL,'_Okay',errlist[error],NIL)
  792.   closeall()
  793. ENDPROC
  794.  
  795. PROC main() HANDLE
  796. DEF signal,result,running=TRUE
  797.  
  798.   installhook(mrhook,{mrhookfunc})
  799.  
  800.   mrprefs:=New(SIZEOF prefs)
  801.   load()
  802.  
  803.   IF (muimasterbase:=OpenLibrary('muimaster.library',8))=NIL THEN Raise(NOMUI)
  804.   IF (iconbase     :=OpenLibrary('icon.library',37))=NIL     THEN Raise(NOICON)
  805.  
  806.   GetProgramName(programname,80)
  807.   proglock:=GetProgramDir()
  808.   NameFromLock(proglock,programdir,80)
  809.   IF StrCmp(programname,'\0')
  810.     StrCopy(programname,'MultiReset')
  811.   ENDIF
  812.   StrCopy(mriconname,programdir,ALL)
  813.   StrAdd(mriconname,'/',ALL)
  814.   StrAdd(mriconname,FilePart(programname),ALL)  
  815.   mricon:=GetDiskObject(mriconname)
  816.  
  817.   create_app()
  818.   init_notifications_app(mrapp)
  819.   setgads()
  820.  
  821.   WHILE running
  822.     result:=domethod(mrapp.app,[MUIM_Application_Input,{signal}])
  823.     SELECT result
  824.       CASE MUIV_Application_ReturnID_Quit
  825.          running:=FALSE
  826.       CASE GETSFX
  827.     getasl(1)
  828.       CASE GETGFX
  829.     getasl(2)
  830.       CASE GETLOG
  831.     getasl(3)
  832.       CASE GETDOS
  833.     getasl(4)
  834.       CASE GETSTRSFX
  835.          GetAttr(MUIA_String_Contents,mrapp.stR_Sfx,{tsfx})
  836.          AstrCopy(mrprefs.sfxpath,tsfx,ALL)
  837.       CASE GETSTRGFX
  838.          GetAttr(MUIA_String_Contents,mrapp.stR_Gfx,{tgfx})
  839.          AstrCopy(mrprefs.gfxpath,tgfx,ALL)
  840.       CASE GETSTRLOG
  841.          GetAttr(MUIA_String_Contents,mrapp.stR_Log,{tlog})
  842.          AstrCopy(mrprefs.logpath,tlog,ALL)
  843.       CASE GETSTRDOS
  844.          GetAttr(MUIA_String_Contents,mrapp.stR_Dos,{tdos})
  845.          AstrCopy(mrprefs.dospath,tdos,ALL)
  846.       CASE GETPICPOS
  847.          picturepos()
  848.       CASE GETPICX
  849.          GetAttr(MUIA_String_Contents,mrapp.stR_Picx,{tpix})
  850.          mrprefs.pos[0]:=Val(tpix)
  851.       CASE GETPICY
  852.          GetAttr(MUIA_String_Contents,mrapp.stR_Picy,{tpiy})
  853.          mrprefs.pos[1]:=Val(tpiy)
  854.       CASE GETVECPOS
  855.          vectorpos()
  856.       CASE GETVECX
  857.          GetAttr(MUIA_String_Contents,mrapp.stR_Vecx,{tvex})
  858.          mrprefs.pos[2]:=Val(tvex)
  859.       CASE GETVECY
  860.          GetAttr(MUIA_String_Contents,mrapp.stR_Vecy,{tvey})
  861.          mrprefs.pos[3]:=Val(tvey)
  862.       CASE GETLOAD
  863.          load()
  864.          setgads()
  865.       CASE GETSAVE
  866.          save()
  867.          running:=FALSE
  868.       CASE GETINFO
  869.           Mui_RequestA(mrapp.app,NIL,NIL,NIL,'_Okay',
  870.               'MultiReset 3.0ß\n\n'+
  871.               '© 1995 by f.fenn@cross.berlinet.de\n\n'+
  872.               'special thanx to: Mario Cattaneo',NIL)
  873.       CASE GETTEST
  874.          testsettings(MODE_TEST)
  875.       CASE GETRMVE
  876.          testsettings(MODE_REMOVE)
  877.       CASE GETQUIT
  878.          running:=FALSE
  879.     ENDSELECT
  880.     IF signal THEN Wait(signal)
  881.   ENDWHILE
  882.  
  883.   closeall()
  884.  
  885. EXCEPT
  886.  
  887.   reporterr(exception)
  888.  
  889. ENDPROC
  890.